package tools.old.files;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.*;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;

import tools.FieldLimit;

public class StudentRegistrerenView extends JFrame{
	
	public static StudentRegistrerenView instance;
	
	public JPanel panel1 = new JPanel();
	public JLabel title = new JLabel();
	public JLabel voornaam = new JLabel();
	public JLabel achternaam = new JLabel();
	public JLabel email = new JLabel();
	public JLabel gebruikersnaam = new JLabel();
	public JLabel wachtwoord = new JLabel();
	public JLabel ovnummer = new JLabel();
	
	public JTextField voornaamtf = new JTextField();
	public JTextField achternaamtf = new JTextField();
	public JTextField emailtf = new JTextField();
	public JTextField gebruikersnaamtf = new JTextField();
	public JPasswordField wachtwoordtf = new JPasswordField();
	public JTextField ovnummertf = new JTextField();
	public JButton registreer = new JButton();
	public JButton cancel = new JButton();
	public JComboBox KlasCB = new JComboBox();
	
	public static StudentRegistrerenView getInstance() {
		if (instance == null) {
			instance = new StudentRegistrerenView();
		}
		return instance;
	}
	
	public StudentRegistrerenView(){
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setTitle("Registreer een student");
		Klassenlijst.getInstance();
		GUI();
	}

	public void GUI() {
		//frame setup
		this.getContentPane().setLayout(null);
		this.setVisible(true);
		this.setSize(400,399);
		this.setResizable(false);
				
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);
		
		//klassen uit klassenlijst (arraylist) laden
		JComboBox KlasCB = new JComboBox(Klassenlijst.getInstance().getKlassen().toArray());
		KlasCB.setBounds(170, 255, 150, 20);
		panel1.add(KlasCB);

		//label setup
		title.setVisible(true);
		title.setText("Student");
		title.setFont(new Font("Lucida Grande", Font.BOLD, 18));
		title.setBounds(20,20,100,22);
		
		voornaam.setVisible(true);
		voornaam.setText("Voornaam");
		voornaam.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		voornaam.setBounds(20,70,100,18);
		
		achternaam.setVisible(true);
		achternaam.setText("Achternaam");
		achternaam.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		achternaam.setBounds(20,100,100,18);
		
		email.setVisible(true);
		email.setText("E-mail");
		email.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		email.setBounds(20,130,100,18);
		
		gebruikersnaam.setVisible(true);
		gebruikersnaam.setText("Gebruikersnaam");
		gebruikersnaam.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		gebruikersnaam.setBounds(20,160,150,18);
		
		wachtwoord.setVisible(true);
		wachtwoord.setText("Wachtwoord");
		wachtwoord.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		wachtwoord.setBounds(20,190,100,18);
		
		ovnummer.setVisible(true);
		ovnummer.setText("OV-nummer");
		ovnummer.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		ovnummer.setBounds(20,220,100,18);
		
		JLabel klas = new JLabel("Klas");
		klas.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
		klas.setBounds(20, 250, 46, 14);
		panel1.add(klas);
		
		//textfield setup
		voornaamtf.setVisible(true);
		voornaamtf.setBounds(170, 70, 150, 23);
		
		achternaamtf.setVisible(true);
		achternaamtf.setBounds(170, 100, 150, 23);
		
		emailtf.setVisible(true);
		emailtf.setBounds(170, 130, 150, 23);
		
		gebruikersnaamtf.setVisible(true);
		gebruikersnaamtf.setBounds(170, 160, 150, 23);
		
		wachtwoordtf.setVisible(true);
		wachtwoordtf.setBounds(170, 190, 150, 23);
		
		ovnummertf.setVisible(true);
		ovnummertf.setBounds(170, 220, 150, 23);
		ovnummertf.setDocument(new FieldLimit(6));
		ovnummertf.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                char caracter = e.getKeyChar();
                if (((caracter < '0') || (caracter > '9'))
                        && (caracter != '\b')) {
                    e.consume();
                }
            }
        });
		
		//button setup
		registreer.setVisible(true);
		registreer.setText("Registreer");
		registreer.setBounds(220, 300, 100, 25);
		
		cancel.setVisible(true);
		cancel.setText("Cancel");
		cancel.setBounds(220, 338, 100, 25);
		
		//panel1 setup
		panel1.setLayout(null);
		panel1.setVisible(true);
		panel1.setBackground(Color.white);
		panel1.setBounds(0,0, 400, 378);

		panel1.add(title);
		panel1.add(voornaam);
		panel1.add(achternaam);
		panel1.add(email);
		panel1.add(gebruikersnaam);
		panel1.add(wachtwoord);
		panel1.add(ovnummer);
		
		panel1.add(voornaamtf);
		panel1.add(achternaamtf);
		panel1.add(emailtf);
		panel1.add(gebruikersnaamtf);
		panel1.add(wachtwoordtf);
		panel1.add(ovnummertf);
		
		panel1.add(registreer);
		panel1.add(cancel);
		
		//Frame add all components
		getContentPane().add(panel1);
		repaint();
		
		//Add actionlisteners
		cancel.addActionListener(new StudentRegistrerenController(cancel));
		cancel.setActionCommand("Cancel");
		
		registreer.addActionListener(new StudentRegistrerenController(registreer));
		registreer.setActionCommand("registreren");
		
	}
	
	public JTextField getVoornaamtf() {
		return voornaamtf;
	}

	public void setVoornaamtf(JTextField voornaamtf) {
		this.voornaamtf = voornaamtf;
	}

	public JTextField getAchternaamtf() {
		return achternaamtf;
	}

	public void setAchternaamtf(JTextField achternaamtf) {
		this.achternaamtf = achternaamtf;
	}

	public JTextField getEmailtf() {
		return emailtf;
	}

	public void setEmailtf(JTextField emailtf) {
		this.emailtf = emailtf;
	}

	public JTextField getGebruikersnaamtf() {
		return gebruikersnaamtf;
	}

	public void setGebruikersnaamtf(JTextField gebruikersnaamtf) {
		this.gebruikersnaamtf = gebruikersnaamtf;
	}

	public JPasswordField getWachtwoordtf() {
		return wachtwoordtf;
	}

	public void setWachtwoordtf(JPasswordField wachtwoordtf) {
		this.wachtwoordtf = wachtwoordtf;
	}

	public JTextField getOvnummertf() {
		return ovnummertf;
	}

	public void setOvnummertf(JTextField ovnummertf) {
		this.ovnummertf = ovnummertf;
	}

	public  JComboBox getKlasCB() {
		return KlasCB;
	}

	public  void setKlasCB(JComboBox klasCB) {
		KlasCB = klasCB;
	}
	

}
